package com.bls.cate.utils;

import android.content.Context;

import com.alibaba.fastjson.JSON;
import com.blankj.utilcode.util.SPUtils;
import com.bls.cate.constant.SPCode;
import com.bls.cate.model.LoginRes;
import com.bls.cate.model.LoginSpRes;
import com.google.gson.Gson;
import com.xiaomi.mipush.sdk.MiPushClient;

import java.util.Objects;


/**
 * 　　  () 　　　  ()
 * 　　  ( ) 　　　( )
 * 　　  ( ) 　　　( )
 * 　　┏┛┻━━━┛┻┓
 * 　　┃　　　━　　　┃
 * 　　┃　┳┛　┗┳　┃
 * 　　┃　　　┻　　　┃
 * 　　┗━┓　　　┏━┛
 * 　　　　┃　　　┃
 * 　　　　┃　　　┗━━━┓
 * 　　　　┃　　　　　　　┣┓
 * 　　　　┃　　　　　　　┏┛
 * 　　　　┗┓┓┏━┳┓┏┛
 * 　　　　　┃┫┫　┃┫┫
 * 　　　　　┗┻┛　┗┻┛
 * ——————————————————
 * Created by BinglingSu on 2018/1/16.
 * <p>
 * 账号工具
 */

public class AccountUtil {

    /**
     * 登录后向SP中保存登陆数据,并注册极光推送pushId
     */
    public static void writeLoginSp(LoginRes.ResultDataBean resultDataBean) {
        String strLoginSp = JSON.toJSONString(resultDataBean);
        SPUtils.getInstance().put(SPCode.SP_LOGIN, strLoginSp);
    }

    /**
     * 注销后移除SP中保存的登陆数据,并注销极光推送pushId  注销小米即时通讯
     */
    public static void eraseLoginSp(Context context) {
        String pushId = "";
        if (getStrLoginSp() != null)
            pushId = getStrLoginSp().getUniqueId();
        MiPushClient.unsetUserAccount(context, pushId, null);
        SPUtils.getInstance().remove(SPCode.SP_LOGIN);
    }

    /**
     * 判断是否登陆登陆状态
     */
    public static boolean isLogin() {
        return !Objects.equals(SPUtils.getInstance().getString(SPCode.SP_LOGIN, SPCode.SP_LOGIN), SPCode.SP_LOGIN);
    }

    /**
     * 获取 登陆数据
     */
    public static LoginSpRes getStrLoginSp() {
        String strLoginSp = SPUtils.getInstance().getString(SPCode.SP_LOGIN, SPCode.SP_LOGIN);
        if (!Objects.equals(strLoginSp, SPCode.SP_LOGIN))
            return new Gson().fromJson(strLoginSp, LoginSpRes.class);
        else return null;
    }

    /**
     * 获取登录后保存的UniqueId
     */
    public static String getUniqueId() {
        String strLoginSp = SPUtils.getInstance().getString(SPCode.SP_LOGIN);
        LoginSpRes loginSpRes = new Gson().fromJson(strLoginSp, LoginSpRes.class);
        return loginSpRes.getUniqueId();
    }

    /**
     * 修改登陆数据
     */
    public static void updateLoginSp(LoginSpRes loginSpRes) {
        String strLoginSp = JSON.toJSONString(loginSpRes);
        SPUtils.getInstance().put(SPCode.SP_LOGIN, strLoginSp);
    }
}
